import { useDidShow } from '@tarojs/taro'
// 导入角色状态管理
import { useRoleStore } from './store/useRoleStore'
import { useInfoStore } from './store/useInfoStore'
import { authApi } from './services/authApi'
import Taro from '@tarojs/taro'
// 全局样式
import './app.scss'

function App(props) {
  // 提前初始化状态，确保持久化存储能正确加载
  useRoleStore.getState()

  // 对应 onShow
  useDidShow(() => {
    checkLogin();
  })

  // 清除用户信息
  const clearUserInfo = () => {
    const setUserInfo = useInfoStore.getState().setInfo;
    const setDomain = useInfoStore.getState().setDomain;
    setUserInfo(null);
    setDomain(null);
  }

  const checkLogin = async () => {
    const token = Taro.getStorageSync('token');
    const setUserInfo = useInfoStore.getState().setInfo;
    const setDomain = useInfoStore.getState().setDomain;
    const currentUserInfo = useInfoStore.getState().info;
    
    // 如果没有token且不在白名单中，跳转到登录页
    if (!token) {
      const pages = Taro.getCurrentPages();
      if (pages.length === 0 || pages[pages.length - 1].route !== 'package-login/pages/login/index') {
        // 清除用户信息
        clearUserInfo();
        Taro.reLaunch({
          url: '/package-login/pages/login/index'
        });
      }
    } else {
      try {
        // 获取用户信息
        const userInfo = await authApi.getUserInfo();
        if (userInfo) {
          // 只有当用户信息发生变化时才更新
          if (!currentUserInfo || JSON.stringify(currentUserInfo) !== JSON.stringify(userInfo)) {
            setUserInfo(userInfo);
            setDomain(userInfo.domain);
          }
        }
      } catch (error) {
        console.error('获取用户信息失败:', error);
        // 如果获取用户信息失败，可能是token过期，清除token和用户信息
        Taro.removeStorageSync('token');
        clearUserInfo();
        Taro.reLaunch({
          url: '/package-login/pages/login/index'
        });
      }
    }
  }

  return props.children;
}

export default App
